↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
REACH_IN_GGG(X, Y, Edges) → U1_GGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
MEMBER_IN_GG(X, .(H, L)) → U4_GG(X, H, L, member_in_gg(X, L))
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
REACH_IN_GGG(X, Z, Edges) → U2_GGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
MEMBER1_IN_GG(X, .(H, L)) → U5_GG(X, H, L, member1_in_gg(X, L))
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_GGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Y, Edges) → U1_AGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_AGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
REACH_IN_GGG(X, Y, Edges) → U1_GGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
MEMBER_IN_GG(X, .(H, L)) → U4_GG(X, H, L, member_in_gg(X, L))
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
REACH_IN_GGG(X, Z, Edges) → U2_GGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
MEMBER1_IN_GG(X, .(H, L)) → U5_GG(X, H, L, member1_in_gg(X, L))
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_GGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Y, Edges) → U1_AGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_AGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MEMBER1_IN_GG(X, .(L)) → MEMBER1_IN_GG(X, L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
MEMBER_IN_GG(X, .(L)) → MEMBER_IN_GG(X, L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U2_AGG(Z, Edges, member1_out_gg) → REACH_IN_AGG(Z, Edges)
REACH_IN_AGG(Z, Edges) → U2_AGG(Z, Edges, member1_in_gg(.(.([])), Edges))
member1_in_gg(H, .(L)) → member1_out_gg
member1_in_gg(X, .(L)) → U5_gg(member1_in_gg(X, L))
U5_gg(member1_out_gg) → member1_out_gg
member1_in_gg(x0, x1)
U5_gg(x0)
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg)
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(member1_in_gg(.(.([])), x1)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg)
U2_AGG(Z, Edges, member1_out_gg) → REACH_IN_AGG(Z, Edges)
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(member1_in_gg(.(.([])), x1)))
member1_in_gg(H, .(L)) → member1_out_gg
member1_in_gg(X, .(L)) → U5_gg(member1_in_gg(X, L))
U5_gg(member1_out_gg) → member1_out_gg
member1_in_gg(x0, x1)
U5_gg(x0)
U2_AGG(z0, .(z1), member1_out_gg) → REACH_IN_AGG(z0, .(z1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg)
U2_AGG(z0, .(z1), member1_out_gg) → REACH_IN_AGG(z0, .(z1))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(member1_in_gg(.(.([])), x1)))
member1_in_gg(H, .(L)) → member1_out_gg
member1_in_gg(X, .(L)) → U5_gg(member1_in_gg(X, L))
U5_gg(member1_out_gg) → member1_out_gg
member1_in_gg(x0, x1)
U5_gg(x0)
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg)
U2_AGG(z0, .(z1), member1_out_gg) → REACH_IN_AGG(z0, .(z1))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(member1_in_gg(.(.([])), x1)))
member1_in_gg(H, .(L)) → member1_out_gg
member1_in_gg(X, .(L)) → U5_gg(member1_in_gg(X, L))
U5_gg(member1_out_gg) → member1_out_gg
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
REACH_IN_GGG(X, Y, Edges) → U1_GGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
MEMBER_IN_GG(X, .(H, L)) → U4_GG(X, H, L, member_in_gg(X, L))
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
REACH_IN_GGG(X, Z, Edges) → U2_GGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
MEMBER1_IN_GG(X, .(H, L)) → U5_GG(X, H, L, member1_in_gg(X, L))
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_GGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Y, Edges) → U1_AGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_AGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REACH_IN_GGG(X, Y, Edges) → U1_GGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
MEMBER_IN_GG(X, .(H, L)) → U4_GG(X, H, L, member_in_gg(X, L))
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
REACH_IN_GGG(X, Z, Edges) → U2_GGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_GGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
MEMBER1_IN_GG(X, .(H, L)) → U5_GG(X, H, L, member1_in_gg(X, L))
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_GGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_GGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Y, Edges) → U1_AGG(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Y, Edges) → MEMBER_IN_GG(.(X, .(Y, [])), Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
REACH_IN_AGG(X, Z, Edges) → MEMBER1_IN_GG(.(X, .(Y, [])), Edges)
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_AGG(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
MEMBER1_IN_GG(X, .(H, L)) → MEMBER1_IN_GG(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
MEMBER1_IN_GG(X, .(L)) → MEMBER1_IN_GG(X, L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
MEMBER_IN_GG(X, .(H, L)) → MEMBER_IN_GG(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
MEMBER_IN_GG(X, .(L)) → MEMBER_IN_GG(X, L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
reach_in_ggg(X, Y, Edges) → U1_ggg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
member_in_gg(H, .(H, L)) → member_out_gg(H, .(H, L))
member_in_gg(X, .(H, L)) → U4_gg(X, H, L, member_in_gg(X, L))
U4_gg(X, H, L, member_out_gg(X, L)) → member_out_gg(X, .(H, L))
U1_ggg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_ggg(X, Y, Edges)
reach_in_ggg(X, Z, Edges) → U2_ggg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
U2_ggg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_ggg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
reach_in_agg(X, Y, Edges) → U1_agg(X, Y, Edges, member_in_gg(.(X, .(Y, [])), Edges))
U1_agg(X, Y, Edges, member_out_gg(.(X, .(Y, [])), Edges)) → reach_out_agg(X, Y, Edges)
reach_in_agg(X, Z, Edges) → U2_agg(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
U2_agg(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → U3_agg(X, Z, Edges, reach_in_agg(Y, Z, Edges))
U3_agg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_agg(X, Z, Edges)
U3_ggg(X, Z, Edges, reach_out_agg(Y, Z, Edges)) → reach_out_ggg(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U2_AGG(X, Z, Edges, member1_out_gg(.(X, .(Y, [])), Edges)) → REACH_IN_AGG(Y, Z, Edges)
REACH_IN_AGG(X, Z, Edges) → U2_AGG(X, Z, Edges, member1_in_gg(.(X, .(Y, [])), Edges))
member1_in_gg(H, .(H, L)) → member1_out_gg(H, .(H, L))
member1_in_gg(X, .(H, L)) → U5_gg(X, H, L, member1_in_gg(X, L))
U5_gg(X, H, L, member1_out_gg(X, L)) → member1_out_gg(X, .(H, L))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
REACH_IN_AGG(Z, Edges) → U2_AGG(Z, Edges, member1_in_gg(.(.([])), Edges))
U2_AGG(Z, Edges, member1_out_gg(.(.([])), Edges)) → REACH_IN_AGG(Z, Edges)
member1_in_gg(H, .(L)) → member1_out_gg(H, .(L))
member1_in_gg(X, .(L)) → U5_gg(X, L, member1_in_gg(X, L))
U5_gg(X, L, member1_out_gg(X, L)) → member1_out_gg(X, .(L))
member1_in_gg(x0, x1)
U5_gg(x0, x1, x2)
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg(.(.([])), .(x1)))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(.(.([])), x1, member1_in_gg(.(.([])), x1)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
U2_AGG(Z, Edges, member1_out_gg(.(.([])), Edges)) → REACH_IN_AGG(Z, Edges)
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg(.(.([])), .(x1)))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(.(.([])), x1, member1_in_gg(.(.([])), x1)))
member1_in_gg(H, .(L)) → member1_out_gg(H, .(L))
member1_in_gg(X, .(L)) → U5_gg(X, L, member1_in_gg(X, L))
U5_gg(X, L, member1_out_gg(X, L)) → member1_out_gg(X, .(L))
member1_in_gg(x0, x1)
U5_gg(x0, x1, x2)
U2_AGG(z0, .(z1), member1_out_gg(.(.([])), .(z1))) → REACH_IN_AGG(z0, .(z1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ NonTerminationProof
U2_AGG(z0, .(z1), member1_out_gg(.(.([])), .(z1))) → REACH_IN_AGG(z0, .(z1))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg(.(.([])), .(x1)))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(.(.([])), x1, member1_in_gg(.(.([])), x1)))
member1_in_gg(H, .(L)) → member1_out_gg(H, .(L))
member1_in_gg(X, .(L)) → U5_gg(X, L, member1_in_gg(X, L))
U5_gg(X, L, member1_out_gg(X, L)) → member1_out_gg(X, .(L))
member1_in_gg(x0, x1)
U5_gg(x0, x1, x2)
U2_AGG(z0, .(z1), member1_out_gg(.(.([])), .(z1))) → REACH_IN_AGG(z0, .(z1))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), member1_out_gg(.(.([])), .(x1)))
REACH_IN_AGG(y0, .(x1)) → U2_AGG(y0, .(x1), U5_gg(.(.([])), x1, member1_in_gg(.(.([])), x1)))
member1_in_gg(H, .(L)) → member1_out_gg(H, .(L))
member1_in_gg(X, .(L)) → U5_gg(X, L, member1_in_gg(X, L))
U5_gg(X, L, member1_out_gg(X, L)) → member1_out_gg(X, .(L))